package com.sojson.config.exception;

/**
 * 接口返回状态码
 * 
 * @author liu
 * @date 2020-11-02
 */
public enum TransErrorCode {

    /******************************************************************
     ************************* 返回结果说明******************************** 100-199:操作成功，200-299:资源删除异常
     * ，300-399:其他返回值
     *******************************************************************/

    /** 接口调用成功 */
    SUCCESS(200, "SUCCESS"),
    /** 接口调用失败 */
    FAIL(1001, "FAIL"),
    /** 接口调用处理中 */
    ING(4001, "ING"),

    /**
     * 登录,注册,权限异常
     */
    /** 用户未登录 */
    NOT_LOGIN(601, "用户未登录,请先登录"),
    /** 这个账号已经在其他地方登录，请重新登录 */
    USER_KICKED_OUT(602, "这个账号已经在其他地方登录，请重新登录"),
    /** 验证码为空 */
    NOT_CODES(603, "验证码为空"),
    /** 验证码错误 */
    ERR_CODES(604, "验证码输入错误"),
    /** 密码不存在 */
    NOT_PWD(605, "请输入登录密码"),
    /** 用户不存在 */
    NOT_USER(606, "用户不存在"),
    /** 密码错误 */
    ERR_PWD(607, "登录密码错误"),
    /** 第三方登录用户类型错误 */
    NOT_EXIST_USER_TYPE(608, "不支持此方式登录系统"),
    /** 帐号已经禁止登录 */
    USER_FORBID_LOGIN(609, "帐号已经禁止登录"),
    /** 权限不足,请联系管理员添加权限 */
    NOT_USER_PERMISSION(610, "权限不足,请联系管理员添加权限"),
    /** 权限不足,请联系管理员添加权限 */
    NOT_ROLE_PERMISSION(610, "角色权限不足,请联系管理员添加权限"),
    /** 权限不足,请联系管理员添加权限 */
    NOT_PERM_PERMISSION(610, "菜单权限不足,请联系管理员添加权限"),
    /** 权限不足,请联系管理员添加权限 */
    NOT_DEPT_PERMISSION(610, "部门权限不足,请联系管理员添加权限"),
    /** 用户名为空 */
    EMPTY_USERNAME(611, "用户名为空"),
    /** 手机号为空 */
    EMPTY_MOBILE(612, "手机号为空"),
    /** 用户已存在 */
    EXIST_USER(613, "用户已存在"),
    /** 手机号已存在 */
    PHONE_USED_CODES(614, "该手机号已存在"),
    /** 角色已存在 */
    EMPTY_ROLE(615, "角色已存在"),
    /** 旧密码输入错误 */
    ERR_OLD_PWD(616, "旧密码输入错误"),

    /**
     * 系统异常
     */
    /** 请检查properties文件配置是否正确 */
    PROPERTIES_CONFIGURATION_NO_CORRECT(10002, "请检查properties文件配置是否正确"),
    /** 权限注解上的参数为空 */
    PERMIS_ANNO_PARAM_IS_EMPTY(10003, "权限注解上的参数为空"),
    /** JEDIS连接失败 */
    JEDIS_CONNECTION_FALL_THROUGH(10004, "JEDIS连接失败"),
    /** 反序列化异常,缓存中可能存在其他类型数据,已删除,请重试 */
    DESERIALIZE(10005, "反序列化异常,缓存中可能存在其他类型数据,已删除,请重试"),
    /** 资源删除异常 */
    DELETE_FAIL(10006, "删除异常"),
    /** 短信accessKey不存在 */
    NOT_SMS_ACCESSKEY(10025, "短信accessKey不存在，请先设置短信accessKey"),
    /** 短信签名不存在 */
    NOT_SMS_TITLE(10026, "短信签名不存在,请先设置短信签名"),
    /** 短信模板不存在 */
    NOT_SMS_TEMPLATE(10027, "短信模板不存在,请先添加短信模板"),

    /**
     * 请求异常
     */
    /** 参数存在非法字符 */
    EXIST_ILLEGALITY_CHAR_PARAM(30001, "参数存在非法字符"),
    /** 请求头存在非法字符 */
    EXIST_ILLEGALITY_CHAR_HEAD(30002, "请求头存在非法字符"),
    /** 参数验证失败 */
    PARAM_VERIFY_FAIL(30003, "参数验证失败"),

    /**
     * 逻辑异常(处理不了)
     */
    /** 线程繁忙,未获取到锁 */
    THREAD_BUSY(40002, "线程繁忙,未获取到锁"),
    /** 解锁失败,锁被其他线程占用 */
    UNLOCK_FAIL(40003, "解锁失败,锁被其他线程占用"),

    /**
     * 逻辑异常(可以处理)
     */
    /** 操作资源不存在 */
    MOMENT_NOT_FOUND(50001, "操作资源不存在"),
    /** 文件上传出错 */
    UOLOAD_ERROR(50002, "文件上传出错"),
    /** 分类已存在 */
    EXIST_CLASSIFY(50003, "分类已存在"),
    /** 存在下级分类 */
    EXIST_NEXT_CLASSIFY(50004, "存在下级分类"),
    /** 该分类下存在已发布的内容 */
    EXIST_CLASSIFY_CONTENT(50005, "该分类下存在已发布的内容"),
    /** 父生活圈不可以为空 */
    NOT_LIFE_PARENTCODE(50006, "父生活圈不可以为空"),
    /** 域名已存在 */
    EXIST_DOMAIN(50007, "域名已存在"),
    /** 身份证照片不符合要求 */
    ERR0R_IDENTIFY(50008, "身份证照片不符合要求"),
    /** 人脸图片不合格 */
    EMPTY_FACE(50009, "人脸图片不合格"),
    /** 人脸注册失败 */
    ERROR__REG_FACE(50010, "人脸注册失败"),
    /** 评论功能已关闭 */
    COMMENT_CLOSED(50011, "评论功能已关闭"),
    /** 未实名认证，无法操作 */
    UN_AUTHENTICATION(50012, "您未进行实名认证，请认证后进行该操作"),
    /** 评论内容为空，请重新填写评论内容 */
    NULL_COMMENT(50013, "评论内容为空，请重新填写评论内容"),
    /** 已评分 */
    SUBSTANCE_HAS_SCORE(50014, "该内容已评分"),
    /** 身份证认证接口超限 */
    ERR0R_IDENTIFY_NUM(50015, "身份证认证接口超限"),
    /** 身份证号已存在 */
    ERR0R_IDENTIFY_EXIST(50016, "身份证号已存在"),
    /** 已存在该联系人 */
    CONTACTS_IDENTIFY_EXIST(50017, "您已存在该联系人"),
    /** 已签到 */
    SIGN_FINISHED(50018, "已签到"),

    /** 其他系统异常 */
    OTHER_ERROR(99999, "其他系统异常");

    /**
     * 异常编号
     */
    private int code;

    /**
     * 异常信息
     */
    private String msg;

    TransErrorCode(int code, String msg) {
        this.setCode(code);
        this.setMsg(msg);
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}